package jdbc;


import com.mysql.jdbc.jdbc2.optional.MysqlDataSource;

import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Scanner;

public class JDBCTest5 {

    public static void main(String[] args) throws SQLException {
        // 此方式步骤 是 sql查询语句特有的

        //
//        Scanner scanner = new Scanner(System.in);
//        System.out.println("请输入你要输入的id");
//        int id = scanner.nextInt();
//        System.out.println("请输入你要输入的名字");
//        String name = scanner.next();

        //1. 数据源
        DataSource dataSource = new MysqlDataSource();
        ((MysqlDataSource)dataSource).setUrl("jdbc:mysql://127.0.0.1:3306/test?characterEncoding=utf8&useSSL=false");
        ((MysqlDataSource)dataSource).setUser("root");
        ((MysqlDataSource)dataSource).setPassword("000000");

        //2.建立网络连接
        Connection connection = dataSource.getConnection();
        System.out.println(connection);

        //3.构建sql语句
        String str = "select * from student";
        PreparedStatement statement = connection.prepareStatement(str);

        //4.执行sql
        ResultSet resultSet = statement.executeQuery();

        //5.遍历
        while(resultSet.next()){
            System.out.println(resultSet.getInt("id"));
            System.out.println(resultSet.getString("name"));
        }

        //6.回收
        resultSet.close();
        statement.close();
        connection.close();
    }

    public static void main1(String[] args) throws SQLException {

        //此种方式 只是针对 sql增加 删除 改 操作 并不包含 查的操作

        // 1. 数据源
        DataSource dataSource = new MysqlDataSource();
        ((MysqlDataSource)dataSource).setUrl("jdbc:mysql://127.0.0.1:3306/test?characterEncoding=utf8&useSSL=false");
        ((MysqlDataSource)dataSource).setUser("root");
        ((MysqlDataSource)dataSource).setPassword("000000");

        // 2. 建立连接
        Connection connection = dataSource.getConnection();
        System.out.println(connection);

        // 3. 构造sql语句
        //    主流方式 PrepareStatement
        String sql = "insert into student values(1,'张三')";
        PreparedStatement statement = connection.prepareStatement(sql);

        // 4. 将sql 发送到 mysql上执行
        int n = statement.executeUpdate();
        System.out.println(n);

        // 5. 回收资源
        //    回收顺序 和 创建顺序 相反
        statement.close();
        connection.close();

    }
}
